//package com.example.sixi.config.service;
//
//import com.example.sixi.entity.SysPermission;
//import com.example.sixi.entity.SysUser;
//import com.example.sixi.service.SysPermissionService;
//import com.example.sixi.service.SysUserService;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.security.core.GrantedAuthority;
//import org.springframework.security.core.authority.SimpleGrantedAuthority;
//import org.springframework.security.core.userdetails.User;
//import org.springframework.security.core.userdetails.UserDetails;
//import org.springframework.security.core.userdetails.UserDetailsService;
//import org.springframework.security.core.userdetails.UsernameNotFoundException;
//
//import java.util.ArrayList;
//import java.util.List;
//
///**
// * @Author: Hutengfei
// * @Description:
// * @Date Create in 2019/8/29 14:36
// */
//public class UserDetailsServiceImpl implements UserDetailsService {
//    @Autowired
//    private SysUserService sysUserService;
//    @Autowired
//    private SysPermissionService sysPermissionService;
//
//    @Override
//    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
//        if (username == null || "".equals(username)) {
//            throw new RuntimeException("用户不能为空");
//        }
//        //根据用户名查询用户
//        SysUser sysUser = sysUserService.selectByName(username);
//        if (sysUser == null) {
//            throw new RuntimeException("用户不存在");
//        }
//        List<GrantedAuthority> grantedAuthorities = new ArrayList<>();
//        if (sysUser != null) {
//            //获取该用户所拥有的权限
//            List<SysPermission> sysPermissions = sysPermissionService.selectListByUser(sysUser.getId());
//            // 声明用户授权
//            sysPermissions.forEach(sysPermission -> {
//                GrantedAuthority grantedAuthority = new SimpleGrantedAuthority(sysPermission.getPermissionCode());
//                grantedAuthorities.add(grantedAuthority);
//            });
//        }
//        return new User(sysUser.getAccount(), sysUser.getPassword(), sysUser.getEnabled(), sysUser.getAccountNonExpired(), sysUser.getCredentialsNonExpired(), sysUser.getAccountNonLocked(), grantedAuthorities);
//    }
//}
